//package org.pet.service.impl;
//
//import com.github.pagehelper.Page;
//import com.github.pagehelper.PageHelper;
//import org.pet.entity.Pet;
//import org.pet.entity.PetAdopt;
//import org.pet.mapper.PetAdoptMapper;
//import org.pet.mapper.PetMapper;
//import org.pet.service.PetAdoptService;
//import org.pet.util.PageBean;
//import org.pet.util.Result;
//import org.pet.util.ThreadLocalUtil;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.time.LocalDateTime;
//import java.util.List;
//import java.util.Map;
//import java.util.Objects;
//
//
//@Service
//public class PetAdoptServiceImpl implements PetAdoptService {
//
//    @Autowired
//    private PetAdoptMapper petAdoptMapper;
//    @Autowired
//    PetMapper petMapper;
//
//    @Override
//    public PetAdopt getByPetId(Integer petId) {
//        return petAdoptMapper.getByPetId(petId);
//    }
//
//    @Override
//    public PageBean<PetAdopt> listPage(Integer pageNum, Integer pageSize, String gender, Integer age, String variety, String adoptionStatus) {
//
//        PageBean<PetAdopt> list = new PageBean<>();
//
//        //开启分页查询
//        PageHelper.startPage(pageNum,pageSize);
//        List<PetAdopt> lists = petAdoptMapper.listPage(gender,age,variety,adoptionStatus);
//        Page<PetAdopt> page = (Page<PetAdopt>) lists;
//
//        list.setTotal(page.getTotal());
//        list.setItems(page.getResult());
//        return null;
//    }
//
//    @Override
//    public Result add(Pet pet, Integer ownerId) {
//
//        PetAdopt petAdopt = petAdoptMapper.getByPetId(pet.getId());
//        if (petAdopt != null) {
//            return Result.error("宠物已有主人");
//        }
//        PetAdopt newPetAdopt = new PetAdopt();
//        newPetAdopt.setPetId(pet.getId());
//        newPetAdopt.setOwnerId(ownerId);
//        newPetAdopt.setCreateTime(LocalDateTime.now());
//        newPetAdopt.setModifyTime(LocalDateTime.now());
//
//        if (pet.getAdoptionStatus().equals("Adopted")){
//            return Result.error("宠物已被领养");
//        }
//        newPetAdopt.setName(pet.getName());
//        newPetAdopt.setGender(pet.getGender());
//        newPetAdopt.setAge(pet.getAge());
//        newPetAdopt.setVariety(pet.getVariety());
//        newPetAdopt.setVaccinated(pet.getVaccinated());
//        newPetAdopt.setSterilized(pet.getSterilized());
//        newPetAdopt.setAdoptionStatus(pet.getAdoptionStatus());
//
//        return petAdoptMapper.insert(newPetAdopt) == 0 ? Result.error("操作失败") : Result.success();
//    }
//
//    @Override
//    public Result adopt(Integer petId, Integer adoptId) {
//        PetAdopt petAdopt = petAdoptMapper.getByPetId(petId);
//        if (petAdopt == null || petAdopt.getOwnerId() == null) {
//            return Result.error("宠物暂无主人");
//        }
//        if (petAdopt.getOwnerId().equals(adoptId)){
//            return Result.error("不可收养自己的宠物");
//        }
//        petAdopt.setAdoptId(adoptId);
//        petAdopt.setAdoptionStatus("Adopted");
//        petAdopt.setModifyTime(LocalDateTime.now());
//        Pet pet = petMapper.getPet(petId);
//        pet.setAdoptionStatus("Adopted");
//        if (petMapper.update(pet) == 0){
//            return Result.error("操作失败");
//        }
//        return petAdoptMapper.update(petAdopt) == 0 ? Result.error("操作失败") : Result.success();
//    }
//
//    @Override
//    public Result delete(Integer petId, Integer loginId) {
//
//        PetAdopt petAdopt = petAdoptMapper.getByPetId(petId);
//        //若宠物已经被领养，且不是管理员
//        if (petAdopt.getAdoptionStatus().equals("Adopted") && loginId != 1){
//            return Result.error("没有权限");
//        }
//        //若宠物不属于当前用户
//        if (!Objects.equals(loginId, petAdopt.getOwnerId())){
//            return Result.error("没有权限");
//        }
//
//        return petAdoptMapper.delete(petAdopt.getId()) == 0 ? Result.error("操作失败") : Result.success();
//    }
//}
